# create by copilot
# 提示语：写一段python代码，在服务器侧监听8080端口，当用户访问http://www.biboer.cn/hook/地址时，触发调用/Users/gavin/testhook下的"pullgit.sh"shell脚本，并记录log，log文件为hook.log

# 导入所需的模块
import socket
import subprocess
import logging

# 创建一个日志对象
logger = logging.getLogger("hook")
logger.setLevel(logging.INFO)
# 创建一个日志文件处理器
handler = logging.FileHandler("/home/gavin/hook.log")
handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
# 将处理器添加到日志对象
logger.addHandler(handler)

# 创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定到80端口
s.bind(("0.0.0.0", 8080))
# 开始监听
s.listen(5)
# 无限循环等待连接
while True:
    # 接受一个连接
    conn, addr = s.accept()
    # 接收数据
    data = conn.recv(1024)
    # 关闭连接
    conn.close()
    # 将数据转换为字符串
    data = data.decode()
    # 检查数据是否包含http://www.biboer.cn/hook/地址
    if "hook" in data:
        # 记录日志
        logger.info(f"Received hook request from {addr}")
        # 调用shell脚本
        subprocess.call(["/home/gavin/webhook/pullgit.sh"])
        # 记录日志
        logger.info("Executed pullgit.sh")
    else:
        # 记录日志
        logger.info(f"Received invalid request from {addr}")

